AWSのGPU系EC2インスタンスをまとめてみた
機械学習・HPCで利用することの多いAmazon EC2のGPU系インスタンスの情報をまとめてみました。
Amazon EC2 のチップの違い(CPU/GPU/FPGA/ASIC)
Amazon EC2 では、異なるユースケースに合わせて最適化されたさまざまなインスタンスタイプが用意されています。
インスタンスタイプはチップの種類によって、CPU、GPU、FPGA、ASIC に大別することができます。
※写真は "AWS re:Invent 2019: [REPEAT 2] Amazon EC2 foundations (CMP211-R2)" から
多くの人が起動する
- 汎用バースト型のT3
- 汎用Intel CPU のM5
- ArmベースのAWS Graviton2プロセッサを搭載したコンピューティング最適化の C6g
といったインスタンスタイプはすべてチップが CPU です。
一方で、チップに
- GPU(P3/G4など)
- FPGA(F1)
- ASIC(INF1)
を採用した高速コンピューティング用インスタンスタイプも提供されています。
高速コンピューティングインスタンスでは、ハードウェアアクセラレーター (コプロセッサ) を使用して、以下の様なワークロードを効率的に実行します。
※写真は "AWS re:Invent 2019: [REPEAT 2] Amazon EC2 foundations (CMP211-R2)" から
今回は、この高速コンピューティング用インスタンスのうち、GPU系インスタンスタイプを簡単にまとめてみました。
インスタンスタイプ G/P の違い
GPU 系インスタンスタイプはコンピューティングよりのP系とグラフィックよりのG系があります。
インスタンスタイプ | P3 | G4 |
---|---|---|
用途(AWS) | 汎用 GPU インスタンスの最新世代 | 機械学習推論やグラフィックを大量に使用するワークロードを迅速化するために設計 |
用途(NVIDIA) | Highest Performance for Compute and Graphics Workstations | Universal Accelerator for All Workloads, Including Gaming |
アーキテクチャ | Volta | Turing |
GPU | Tesla V100 | T4 Tensor Core |
登場時期 | 2017/10 | 2019/09 |
最小サイズ | p3.2xlarge | g4dn.xlarge |
GPU数 | 1〜16 | 1 〜8 |
GPUメモリ(GiB) | 16 | 16 |
GPU間通信 | NVLink | PCIe |
オンデマンド価格(/H) | 4.19 | 0.71 |
- 「用途(NVIDIA)」はNVIDIAのドキュメントから引用
- 「用途(AWS)」はAWSのドキュメントから引用
- GPU、GPUメモリ、オンデマンド価格は最小サイズに対応するもの
どのGPUインスタンスタイプを使う?
まずは G系・P系それぞれの最新型である G4/P3 に対して実際のワークロードを走らせて評価しましょう。
性能重視のP3、コスパの良い G4 という傾向があります。
P系は GPU 間通信が高速のため、ディープラーニングのトレーニングのように、複数のGPUを利用し、GPU間通信の性能も重要な場合、P系が向いています。 一方で、推論や小規模なトレーニングのように GPU 間通信の性能がそれほど重要でない場合、コストを重要視して、G系が向いています。
あくまでも目安のため、実際のワークロードを走らせ、ご確認ください。
例えば、次のブログでは、機械学習のトレーニングを
- g4dn.12xlarge x 16 インスタンス
- p3.16xlarge x 6 インスタンス
- r5a.16xlarge x 16 インスタンス
でベンチマークし
- トレーニング時間はG4とP3で同じ
- G4 のコストは P3 の半分
- CPU 系の R5a は時間もコストもGPU系の何倍もかかっている
という結果が報告されています。この場合、 G4 が最適です。
※ グラフは同記事から
また、AWS Deep Learning Base AMIの推奨インスタンスタイプは p3.2xlarge です。
また、インスタンスのサイズに関して、Deep Learning AMI のドキュメントには次の記載があります。
モデルのサイズは、インスタンスを選択する際の要因となります。モデルがインスタンスの使用可能な RAM を超えている場合は、アプリケーション用に十分なメモリを持つ別のインスタンスタイプを選択します。
P3 と G4 は GPU 数にも大きな違いがあります。
P3 の GPU 数は以下の様に選択肢が多いです。
- p3.2xlarge : 1
- p3.8xlarge : 4
- p3.16xlarge : 8
- p3dn.24xlarge : 8
一方で G4 は Single GPU VMs(右記2サイズを除くすべて) と Multi GPU VMs(g4dn.12xlarge と g4dn.metal) に分かれており、Single GPU VMs は名前の通り1 GPU、Multi GPU VMs の場合、g4dn.12xlarge は4個、g4dn.metalは8個となっています。
どのAWSサービスでGPUインスタンスを利用できる?
- Amazon EC2
- Amazon ECS/EKS on EC2
- AWS Batch(実質ECS on EC2)
- Amazon SageMaker
などで GPU インスタンスを利用できます。
一方で Fargate は GPU に対応していないので、ご注意ください。
スポットインスタンスを使おう
GPU系インスタンス含む高速コンピューティング用インスタンスタイプは時間単価が比較的高額です。
スポットインスタンスを活用すると、オンデマンドに比べて、最大90% 安く実行できます。
試しに 2020/07/23 に東京リージョンの g4dn.xlarge を確認すると
- オンデマンド : $0.71/h
- スポット : $0.213/h
と70%オフでした。
インスタンスタイプ・リージョンによっては、利用できないAZがあったり、スポットインスタンスの空きが無いこともあります。ご注意ください。
事前準備が必要
GPU を利用するには、GPU ドライバや CUDA といった GPU ライブラリのインストールが必要です。
都度インストールするのは手間なため、初期設定済みの AMI を作成するのも有力です。
ドライバだけがインストールされた AMI が AWS から提供されています。
さらに、GPU を活用することが多く、フレームワークのインストールだけで一仕事なAIワークロード向けには、GPU 設定と主要フレームワークのインストールを済ませた AMI(AWS Deep Learning AMI/DLAMI) が AWS から提供されています。
What Is the AWS Deep Learning AMI? - Deep Learning AMI
ECS/EKS には、アクセラレーター最適化済みの AMI が提供されています。
GPU ワークロードを走らせることが多い AWS ParallelClusterの場合、ドライバー・CUDAは自動的にインストールされます。
NVIDIA のエコシステム
AWS 上の GPU は NVIDIA 一択のため、NVIDIA のGPU系ツール・エコシステムに出てくるキーワードをまとめておきます。
GPU
数千のコア数、非常に優れた並列処理性能を持つチップです。
桁違いの並列度は何が嬉しいのか?
次の動画が直感的な理解の助けになるでしょう。
次の動画もおすすめです。
CUDA
GPU アクセラレーション・アプリケーション向けの並列コンピューティングプラットフォームおよびプログラミングモデルです。
URL : https://developer.nvidia.com/cuda-zone
NCCL
MPI 相当のスタックの NVIDIA GPU 実装です(OpenMPIの対応物)。
URL : https://developer.nvidia.com/nccl
cuBLASS
線形代数ライブラリ(Basic Linear Algebra Subprograms/LAS)API のCUDA版です(OpenBLASS の対応物)。
URL : https://developer.nvidia.com/cublas
cuDNN
NVIDIA が開発する CUDA 向けの DNN ライブラリです(INTEL は CPU 版の DNN ライブラリ oneDNN(旧称MKL-DNN)を開発しています)。
URL : https://developer.nvidia.com/cudnn
まとめ
- AWSではNVIDIAのGPUを利用できます。
- おすすめのEC2インスタンスタイプは V100 の P3 と T4 Tensor Core の G4 です。特に 2019 年にリリースされたばかりの G4 は高い費用対効果を期待できます。
- スポットインスタンスで起動すると、オンデマンドよりも最大で90%安く実行できます。
- コンテナの場合、Fargate は GPU を利用できません。データプレーンには EC2 をご利用ください。
- GPU を利用するためには、ドライバやライブラリをインストールする必要があります。AWS Deep Learning AMI (DLAMI) のようなコミコミの AMI を利用すると、構築の手間を削減できます。
おまけ
最後に、NVIDIA の革ジャン CEO Jensen Huang による GTC 2020 のキーノート動画を貼り付けておきます。
参考
- インスタンスタイプ - Amazon EC2 | AWS
- Linux accelerated computing instances - Amazon Elastic Compute Cloud
- GPU-Accelerated Amazon Web Services | Boost Performance and Scale Deep Learning and HPC Applications.
- Amazon Brings AI Performance to the Cloud with NVIDIA T4 | NVIDIA Blog
- AWS re:Invent 2019: [REPEAT 2] Amazon EC2 foundations (CMP211-R2) (スライド)